import { defineUserConfig } from "vuepress";

import { defaultTheme } from "@vuepress/theme-default";

//另一个搜索框的  不好看 不用这个
// import { docsearchPlugin } from '@vuepress/plugin-docsearch'
import { searchPlugin } from '@vuepress/plugin-search'

import { getDirname, path } from '@vuepress/utils'

import { mediumZoomPlugin } from '@vuepress/plugin-medium-zoom'
import { registerComponentsPlugin } from '@vuepress/plugin-register-components'

// import { copyCodePlugin } from "./codeCopy/node/index";
import { copyCodePlugin } from "vuepress-plugin-copy-code2";

import navbar from './navbar'
import sidebar from './sidebar'
import pagePatternsHandler from "./pagePatternsHandler";


var base = undefined
// var base = '/page/xvpmue'   //如果放服务器上面  url不是/根路径的话 ， 那么部署构建的时候打开这个

var baseUrl = base && base != '/' ? base : ''


export default defineUserConfig({
  base: base,
  lang: "zh-CN",
  title: "追风铃的小屋",
  description: "追风铃的小屋",
  debug: true,


  // 哪些文件要编译打包成html 展示出来
  pagePatterns: pagePatternsHandler(),


  head: [
      //额外的需要被注入到当前页面的 HTML <head> 中的标签
      //网站ico 图标， 本地文件放  .vuepress/public 路径下哦
    ["link", { rel: "icon", href: "/img/favicon.ico" }],
    // ["link", { rel: "stylesheet", href: "/css/style.css" }],    //自定义样式,也可以使用styles/index.styl来设置


    //复制到粘贴板   不需要了  直接用插件了
    // ["script", { charset: "utf-8", src: "https://cdn.jsdelivr.net/npm/clipboard@2.0.6/dist/clipboard.min.js" }],

    // 鼠标移动特效   另外几个特效有问题 应该是 初始css没调好
    ["script", { charset: "utf-8", src: baseUrl + "/js/mouse-fairyDustCursor.js" }],
    // 鼠标点击粒子
    ["script", { charset: "utf-8", src: baseUrl + "/js/mouse-cursor-effects.js" }],

    //百度统计
    [
      'script', {}, `
        var _hmt = _hmt || [];
        (function() {
          var hm = document.createElement("script");
          hm.src = "https://hm.baidu.com/hm.js?855bdec472aad74d863924c5c5590ea8";
          var s = document.getElementsByTagName("script")[0]; 
          s.parentNode.insertBefore(hm, s);
        })();
        `
    ]

  ],

  plugins: [

    //代码复制  参考：https://vuepress-theme-hope.gitee.io/v2/copy-code/zh/config.html
    //我拉源码下了  改了部分源码
    copyCodePlugin({
      // 插件选项
      pure: true
    }),
    //另一个搜索框的  不好看 不用这个
    // docsearchPlugin({
    //
    // }),
    searchPlugin({
      locales: {
        '/': {
          placeholder: '搜索',
        },
        '/zh/': {
          placeholder: '搜索',
        },
        // 允许搜索 Frontmatter 中的 `tags`
        getExtraFields: (page) => {
          return page.frontmatter.tags ?? []
        }
      },
    }),

    //图片缩放
    mediumZoomPlugin({
      // 配置项
      //样式我直接在index.scss覆盖了
    }),
    //自动注册 Vue 组件。
    registerComponentsPlugin({
      // 配置项
        componentsDir: path.resolve(__dirname, './components'),
    }),


  ],

  // theme: path.resolve(__dirname, './theme'), // 使用本地主题包
  theme: defaultTheme({
    // Logo 图片将会显示在导航栏的左端。  Public 文件路径
    logo: '/img/avatar.jpg',
    //导航栏
    navbar: navbar,

    // 侧边栏对象
    // 不同子路径下的页面会使用不同的侧边栏
    sidebar: sidebar,
    sidebarDepth: 5

  }),

  markdown: {
    headers:{
      level: [1, 2, 3, 4, 5],
    },
    anchor: {
      level: [2, 3, 4, 5],
    },
    extractHeaders: {
      level: [2, 3, 4, 5],
    },
  },

  // md文件解析扩展
  extendsMarkdown: (md) => {
    // 图片md转html
    // 参考依赖包里源码 node_modules\@vuepress\markdown\dist\index  搜索 md.renderer.rules.image
    const rawImageRule = md.renderer.rules.image;
    md.renderer.rules.image = function(tokens, idx, options, env, self) {
      const token = tokens[idx];
      var link = token.attrGet("src");
      // 当前目录 aa 自动加上 ./ 变成 ./aa
      if (!/^\.{1,2}\//.test(link) && !/(http|https):\/\/\S*/.test(link)) {
        link = './' +  link
        token.attrSet("src", link);
      }
      return rawImageRule(tokens, idx, options, env, self);
    };
  },



  // shouldPreload:(file, type)=>{
  //
  // },
  // shouldPrefetch:(file, type)=>{
  //
  // },

});
